Observer design patterns can provide a framework for allowing one or more objects to observe a state of one or more additional objects in one or more processes in a computing system. For instance, in typical observer design pattern implementations, an object, called the subject, can maintain a list of dependents, called observers. For instance, an observer can register with a subject when the observer desires to receive notifications associated with one or more state changes of the subject. In this manner, the observer design pattern can provide a loose coupling between a subject and its observers. When a state of the subject changes, the subject can notify each observer registered with the observer of the state change. The notified observers can then perform one or more actions based at least in part on the notification.
In such typical implementations, the subject can suffer a penalty for publishing data. For instance, the subject can use a linked list to associated observers with the subject. The linked list must be traversed by the subject upon a state change of the subject to notify the registered observers of the state change. The processing time to traverse the list can grow as the number of observers registered with the subject increases. In addition, such linked list can provide difficulties in allowing a multi-process implementation wherein observers can be notified about state changes of subjects included in different processes from the observers.